#include <ESP8266WiFi.h>

//기상청서버
const int httpPort = 80;
const char* host = "www.kma.go.kr";
//---------------------------------------------
const char* ssid = "*********"; // WIFI ID
const char* password = "*********"; //WIFI PASSWORD
const String url = "/wid/queryDFSRSS.jsp?zone=2817766000"; // 지역별 주소작성(rss)
String area = "********"; // 지역 작성(영어만 가능)
//---------------------------------------------
bool awaitingArrivals = true;
bool arrivalsRequested = false;
WiFiClient client;

unsigned long previousMillis = 0;

// 지역 정보
String Temp = ""; // 온도
String Humi = ""; // 습도
String WfEn = ""; // 날씨(영어)
String WfKor = ""; // 날씨(한글)

void setup() {
  Serial.begin(115200);
  connectWiFi();
}

void loop() {
  unsigned long currentMillis = millis();
  getData();
  Serial.println("-----------------");
  Serial.println("지역: "+area);
  Serial.println("온도: " + Temp);
  Serial.println("습도: " + Humi);
  Serial.print("날씨: " + WfEn);
  Serial.println("(" + WfKor + ")");
  Serial.println("-----------------");
}


void getData(){
  if(client.connect(host, httpPort)){
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
    "Host: " + host + "\r\n" + 
    "Connection: close\r\n\r\n");
    //Serial.println("request sent");
    delay(50);
  }
  
   while(client.connected()){
    String line = client.readStringUntil('\n');
    if(line == "\r"){
      //Serial.println("headers received");
      break;
    }
  }

  String matchString = "";
  while(client.available()){
     String line = client.readStringUntil('\e');
     
     //온도
    int temp = line.indexOf("</temp>");
      if(temp>0){       
        String tmp_str = "<temp>";
        String wt_temp = line.substring(line.indexOf(tmp_str)+tmp_str.length(),temp);
        Temp = wt_temp;
       }
       
    
    //습도
    int reh = line.indexOf("</reh>");
      if(reh>0){
        String tmp_str = "<reh>";
        String wt_humi = line.substring(line.indexOf(tmp_str)+tmp_str.length(),reh);
        Humi = wt_humi;
     }

    //날씨 영어
    int wfEn = line.indexOf("</wfEn>");
    if(wfEn>0){
      String tmp_str = "<wfEn>";
      String wt_wfEn = line.substring(line.indexOf(tmp_str)+tmp_str.length(),wfEn);
      WfEn = wt_wfEn;   
    }
    //날씨 한글
    int wfKor = line.indexOf("</wfKor>");
    if(wfKor>0){
      String tmp_str = "<wfKor>";
      String wt_wfKor = line.substring(line.indexOf(tmp_str)+tmp_str.length(),wfKor);
      WfKor = wt_wfKor;
    }
  }
}


void connectWiFi(){
  Serial.println();
  Serial.println();
  Serial.println("Connecting to ");
  Serial.print(ssid);
  WiFi.hostname("Name");
  WiFi.begin(ssid, password);

  while(WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}